package net.dgg.dggcloud.service.jrcrm.entity.customer;

import net.dgg.dggcloud.core.util.DateUtil;
import net.dgg.dggcloud.core.util.StringUtils;
import net.dgg.dggcloud.service.entity.BaseEntity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;

/**
 * @ClassName: AttrPolicy-客户保单信息
 * @Description: 用于客户保单信息维护
 * @Author: 周潮
 * @Date: 2017年11月03 14:28:28
 * @Version V1.0
 */
@Entity
@Table(name = "cus_attr_policy")
public class AttrPolicy extends BaseEntity {

    //数据库表名
    public static final String TABLE_NAME = "cus_attr_policy";

    /**
     * 客户id 
     */
    @Column(name = "customer_id")
    private Long customerId;

    /**
     * 保单所有内容前台展示用
     */
    @Transient
    private String frontShow;

    /**
     * 保险公司 
     */
    @Column(name = "insurance_company")
    private String insuranceCompany;

    /**
     * 保险公司-前台展示用
     */
    @Transient
    private String insuranceCompanyShow;

    /**
     * 缴费方式 
     */
    @Column(name = "payment_way")
    private String paymentWay;

    /**
     * 缴费方式-前台展示用
     */
    @Transient
    private String paymentWayShow;

    /**
     * 缴费金额 
     */
    @Column(name = "payment_amount")
    private Double paymentAmount;

    /**
     * 缴费金额-前台展示用
     */
    @Transient
    private String paymentAmountShow;

    /**
     * 缴费开始时间 
     */
    @Column(name = "payment_time")
    private Date paymentTime;

    /**
     * 缴费开始时间-前台展示用
     */
    @Transient
    private String paymentTimeShow;

    /**
     * 缴费年限 
     */
    @Column(name = "payment_years")
    private String paymentYears;

    /**
     * 缴费年限-前台展示用
     */
    @Transient
    private String paymentYearsShow;

    /**
     * 投保人 
     */
    @Column(name = "policy_holder")
    private String policyHolder;

    /**
     * 投保人-前台展示用
     */
    @Transient
    private String policyHolderShow;

    /**
     * 是否断缴 （1是0否）
     */
    @Column(name = "is_paid_off")
    private Integer isPaidOff;

    /**
     * 是否断缴-前台展示用
     */
    @Transient
    private String isPaidOffShow;

    /**
     * 是否变更投保人 
     */
    @Column(name = "is_change")
    private Integer isChange;

    /**
     * 是否变更投保人-前台展示用
     */
    @Transient
    private String isChangeShow;

    /**
     * 变更时间 
     */
    @Column(name = "change_time")
    private Date changeTime;

    /**
     * 变更时间-前台展示用
     */
    @Transient
    private String changeTimeShow;

    /**
     * 外部系统读取标志 预留扩展字段，每外部系统占用一位，如1001
     */
    @Column(name = "read_flag")
    private String readFlag;

    /**
     * 外部系统来源标志 预留扩展字段，每外部系统占用一位，如1001
     */
    @Column(name = "source_flag")
    private String sourceFlag;

    /**
     * 扩展字段1 
     */
    @Column(name = "ext1")
    private String ext1;

    /**
     * 扩展字段2 
     */
    @Column(name = "ext2")
    private String ext2;

    /**
     * 扩展字段3 
     */
    @Column(name = "ext3")
    private String ext3;

    /**
     * 扩展字段4 
     */
    @Column(name = "ext4")
    private String ext4;

    /**
     * 扩展字段5 
     */
    @Column(name = "ext5")
    private String ext5;

    /**
     * 扩展字段6 
     */
    @Column(name = "ext6")
    private String ext6;

    /**
     * 扩展字段7 
     */
    @Column(name = "ext7")
    private String ext7;

    /**
     * 扩展字段8 
     */
    @Column(name = "ext8")
    private String ext8;

    /**
     * 扩展字段9 
     */
    @Column(name = "ext9")
    private String ext9;

    /**
     * 扩展字段10 
     */
    @Column(name = "ext10")
    private String ext10;



    /**
     * 外部系统读取标志 预留扩展字段，每外部系统占用一位，如1001
     * @return read_flag 外部系统读取标志 预留扩展字段，每外部系统占用一位，如1001
     */
    public String getReadFlag() {
        return readFlag;
    }

    /**
     * 外部系统读取标志 预留扩展字段，每外部系统占用一位，如1001
     * @param readFlag 外部系统读取标志 预留扩展字段，每外部系统占用一位，如1001
     */
    public void setReadFlag(String readFlag) {
        this.readFlag = readFlag == null ? null : readFlag.trim();
    }

    /**
     * 外部系统来源标志 预留扩展字段，每外部系统占用一位，如1001
     * @return source_flag 外部系统来源标志 预留扩展字段，每外部系统占用一位，如1001
     */
    public String getSourceFlag() {
        return sourceFlag;
    }

    /**
     * 外部系统来源标志 预留扩展字段，每外部系统占用一位，如1001
     * @param sourceFlag 外部系统来源标志 预留扩展字段，每外部系统占用一位，如1001
     */
    public void setSourceFlag(String sourceFlag) {
        this.sourceFlag = sourceFlag == null ? null : sourceFlag.trim();
    }

    /**
     * 客户id 
     * @return customer_id 客户id 
     */
    public Long getCustomerId() {
        return customerId;
    }

    /**
     * 客户id 
     * @param customerId 客户id 
     */
    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    /**
     * 保险公司
     * @return insuranceCompany 保险公司
     */
    public String getInsuranceCompany() {
        return insuranceCompany;
    }

    /**
     * 保险公司
     * @param insuranceCompany 保险公司
     */
    public void setInsuranceCompany(String insuranceCompany) {
        this.insuranceCompany = insuranceCompany;
    }

    /**
     * 缴费方式 
     * @return payment_way 缴费方式 
     */
    public String getPaymentWay() {
        return paymentWay;
    }

    /**
     * 缴费方式 
     * @param paymentWay 缴费方式 
     */
    public void setPaymentWay(String paymentWay) {
        this.paymentWay = paymentWay == null ? null : paymentWay.trim();
    }

    /**
     * 缴费金额 
     * @return payment_amount 缴费金额 
     */
    public Double getPaymentAmount() {
        return (null != paymentAmount ? paymentAmount/100 : null);
    }

    /**
     * 缴费金额 
     * @param paymentAmount 缴费金额 
     */
    public void setPaymentAmount(Double paymentAmount) {
        this.paymentAmount = (null != paymentAmount ? paymentAmount*100 : null);
    }

    /**
     * 缴费开始时间 
     * @return payment_time 缴费开始时间 
     */
    public Date getPaymentTime() {
        return paymentTime;
    }

    /**
     * 缴费开始时间 
     * @param paymentTime 缴费开始时间 
     */
    public void setPaymentTime(Date paymentTime) {
        this.paymentTime = paymentTime;
    }

    /**
     * 缴费年限 
     * @return payment_years 缴费年限
     */
    public String getPaymentYears() {
        return paymentYears;
    }

    /**
     * 缴费年限 
     * @param paymentYears 缴费年限
     */
    public void setPaymentYears(String paymentYears) {
        this.paymentYears = paymentYears;
    }

    /**
     * 投保人 
     * @return policy_holder 投保人 
     */
    public String getPolicyHolder() {
        return policyHolder;
    }

    /**
     * 投保人 
     * @param policyHolder 投保人 
     */
    public void setPolicyHolder(String policyHolder) {
        this.policyHolder = policyHolder == null ? null : policyHolder.trim();
    }

    /**
     * 是否断缴 
     * @return is_paid_off 是否断缴 
     */
    public Integer getIsPaidOff() {
        return isPaidOff;
    }

    /**
     * 是否断缴 
     * @param isPaidOff 是否断缴 
     */
    public void setIsPaidOff(Integer isPaidOff) {
        this.isPaidOff = isPaidOff;
    }

    /**
     * 是否变更投保人 
     * @return is_change 是否变更投保人 
     */
    public Integer getIsChange() {
        return isChange;
    }

    /**
     * 是否变更投保人 
     * @param isChange 是否变更投保人 
     */
    public void setIsChange(Integer isChange) {
        this.isChange = isChange;
    }

    /**
     * 变更时间 
     * @return change_time 变更时间 
     */
    public Date getChangeTime() {
        return changeTime;
    }

    /**
     * 变更时间 
     * @param changeTime 变更时间 
     */
    public void setChangeTime(Date changeTime) {
        this.changeTime = changeTime;
    }

    /**
     * 扩展字段1 
     * @return ext1 扩展字段1 
     */
    public String getExt1() {
        return ext1;
    }

    /**
     * 扩展字段1 
     * @param ext1 扩展字段1 
     */
    public void setExt1(String ext1) {
        this.ext1 = ext1 == null ? null : ext1.trim();
    }

    /**
     * 扩展字段2 
     * @return ext2 扩展字段2 
     */
    public String getExt2() {
        return ext2;
    }

    /**
     * 扩展字段2 
     * @param ext2 扩展字段2 
     */
    public void setExt2(String ext2) {
        this.ext2 = ext2 == null ? null : ext2.trim();
    }

    /**
     * 扩展字段3 
     * @return ext3 扩展字段3 
     */
    public String getExt3() {
        return ext3;
    }

    /**
     * 扩展字段3 
     * @param ext3 扩展字段3 
     */
    public void setExt3(String ext3) {
        this.ext3 = ext3 == null ? null : ext3.trim();
    }

    /**
     * 扩展字段4 
     * @return ext4 扩展字段4 
     */
    public String getExt4() {
        return ext4;
    }

    /**
     * 扩展字段4 
     * @param ext4 扩展字段4 
     */
    public void setExt4(String ext4) {
        this.ext4 = ext4 == null ? null : ext4.trim();
    }

    /**
     * 扩展字段5 
     * @return ext5 扩展字段5 
     */
    public String getExt5() {
        return ext5;
    }

    /**
     * 扩展字段5 
     * @param ext5 扩展字段5 
     */
    public void setExt5(String ext5) {
        this.ext5 = ext5 == null ? null : ext5.trim();
    }

    /**
     * 扩展字段6 
     * @return ext6 扩展字段6 
     */
    public String getExt6() {
        return ext6;
    }

    /**
     * 扩展字段6 
     * @param ext6 扩展字段6 
     */
    public void setExt6(String ext6) {
        this.ext6 = ext6 == null ? null : ext6.trim();
    }

    /**
     * 扩展字段7 
     * @return ext7 扩展字段7 
     */
    public String getExt7() {
        return ext7;
    }

    /**
     * 扩展字段7 
     * @param ext7 扩展字段7 
     */
    public void setExt7(String ext7) {
        this.ext7 = ext7 == null ? null : ext7.trim();
    }

    /**
     * 扩展字段8 
     * @return ext8 扩展字段8 
     */
    public String getExt8() {
        return ext8;
    }

    /**
     * 扩展字段8 
     * @param ext8 扩展字段8 
     */
    public void setExt8(String ext8) {
        this.ext8 = ext8 == null ? null : ext8.trim();
    }

    /**
     * 扩展字段9 
     * @return ext9 扩展字段9 
     */
    public String getExt9() {
        return ext9;
    }

    /**
     * 扩展字段9 
     * @param ext9 扩展字段9 
     */
    public void setExt9(String ext9) {
        this.ext9 = ext9 == null ? null : ext9.trim();
    }

    /**
     * 扩展字段10 
     * @return ext10 扩展字段10 
     */
    public String getExt10() {
        return ext10;
    }

    /**
     * 扩展字段10 
     * @param ext10 扩展字段10 
     */
    public void setExt10(String ext10) {
        this.ext10 = ext10 == null ? null : ext10.trim();
    }

    public void setFrontShow(String frontShow) {
        this.frontShow = frontShow;
    }

    public String getInsuranceCompanyShow() {
        return StringUtils.isNotEmpty(insuranceCompany) ? "保险公司【" + insuranceCompany + "】;" : "";
    }

    public void setInsuranceCompanyShow(String insuranceCompanyShow) {
        this.insuranceCompanyShow = insuranceCompanyShow;
    }

    public String getPaymentWayShow() {
        return StringUtils.isNotEmpty(paymentWay) ? "缴费方式【" + paymentWay + "】;" : "";
    }

    public void setPaymentWayShow(String paymentWayShow) {
        this.paymentWayShow = paymentWayShow;
    }

    public String getPaymentAmountShow() {
        return (null != getPaymentAmount() ? "缴费金额【" + getPaymentAmount() + "元】;" : "");
    }

    public void setPaymentAmountShow(String paymentAmountShow) {
        this.paymentAmountShow = paymentAmountShow;
    }

    public String getPaymentTimeShow() {
        return (null != paymentTime ? "缴费开始时间【" + DateUtil.dateToString(paymentTime, "yyyy-MM-dd") + "】;" : "");
    }

    public void setPaymentTimeShow(String paymentTimeShow) {
        this.paymentTimeShow = paymentTimeShow;
    }

    public String getPaymentYearsShow() {
        return (StringUtils.isNotEmpty(paymentYears) ? "已缴费年限【" + paymentYears + "】;" : "");
    }

    public void setPaymentYearsShow(String paymentYearsShow) {
        this.paymentYearsShow = paymentYearsShow;
    }

    public String getPolicyHolderShow() {
        return (null != policyHolder ? "投保人【" + policyHolder + "】;" : "");
    }

    public void setPolicyHolderShow(String policyHolderShow) {
        this.policyHolderShow = policyHolderShow;
    }

    public String getIsPaidOffShow() {
        if(null != isPaidOff){
            return 1 == isPaidOff ? "是否断缴【是】;" : "是否断缴【否】;";
        }else {
            return "";
        }
    }

    public void setIsPaidOffShow(String isPaidOffShow) {
        this.isPaidOffShow = isPaidOffShow;
    }

    public String getIsChangeShow() {
        if(null != isChange){
            return 1 == isChange ? "是否变更投保人【是】;" : "是否变更投保人【否】;";
        }else {
            return "";
        }
    }

    public void setIsChangeShow(String isChangeShow) {
        this.isChangeShow = isChangeShow;
    }

    public String getChangeTimeShow() {
        return (null != changeTime ? "缴费开始时间【" + DateUtil.dateToString(changeTime, "yyyy-MM-dd") + "】;" : "");
    }

    public void setChangeTimeShow(String changeTimeShow) {
        this.changeTimeShow = changeTimeShow;
    }

    public String getFrontShow() {
//        return "有保单：" + getInsuranceCompanyShow() + getPaymentWayShow() + getPaymentAmountShow() + getPaymentTimeShow() +
//                getPaymentYearsShow() + getPolicyHolderShow() + getIsPaidOffShow() + getIsChangeShow() + getChangeTimeShow();
        return "有保单：" + getInsuranceCompanyShow() + getPaymentWayShow() + getPaymentAmountShow() + getPaymentTimeShow() +
                getPaymentYearsShow() + getPolicyHolderShow() + getIsChangeShow() + getChangeTimeShow();
    }
}